Chod hore
Predchádzajúca stránka Nasledujúca stránka Začiatok kapitoly Koniec kapitoly Začiatok kurzu Koniec kurzu


8. VÝRAZY, PODMIENKY, RIADENIE PROGRAMU


V tejto časti sa oboznámime s výrazmi, medzi inými aj s logickými, t.j. s podmienkami. Ďalej sa budeme venovať vetveniu programu v závislosti od určitých podmienok.



8.1 Výrazy


Každý výraz pozostáva z činiteľov a operátorov. Výraz môže pozostávať aj z jediného činiteľa a každý činiteľ môže byť ďalším výrazom. Sú jedno- a dvojzložkové operátory.
Činiteľom môže byť: ¨ Premenná ¨ Konštanta ¨ Hodnota funkcie ¨ Výraz

Napr.: 
 Alfa
 Sin(Alfa) + 5
 Ln(Sqrt(A)-6)*3
 -98E4
 (J<5) Or (J>10)
 Not (Sqrt(N)=0)

Pre každý operátor sú určené pravidlá, že aké činitele môžu byť na jeho ľavej a pravej strane. Výsledok operácie má tiež svoj typ podľa činiteľov. Pascal je prísne typizovaný jazyk, t.j. všetko má svoj typ. O type konštánt Turbo Pascal rozhoduje, typ premenných určuje programátor. Aj funkcie a výrazy majú svoj typ a teda je jednoznačne určený aj typ výsledku.

Pre určenie typu celočíselných konštánt môže dobre poslúžiť nasledujúca tabuľka:

Obr8_1

Typ výsledku operácií *, MOD, DIV, + a - je uvedený v nasledujúcej tabuľke:

Obr8_2

K tomu aby sme určili typ výsledku, musíme poznať aj prioritu operácií.

Priorita operácií

  • Najvyššiu prioritu majú znamienka + a - , a operácia NOT.
  • V druhom rade sa vykonajú "násobenia":
    * / DIV MOD AND SHL SHR
  • Potom nasledujú operácie "sčítania":
    + - OR XOR
  • Najnižšiu prioritu majú operácie porovnávania:
    = <> < <= > >=


Operácie, nachádzajúce sa v jednej skupine - sú rovnocenné, majú rovnakú prioritu. V prípade operácií s rovnakou prioritou operácie sa vykonávajú zľava doprava. Toto platí, ak nepoužívame zátvorky. Ak použijeme zátvorky, potom najprv sa vždy vykonajú operácie v zátvorke.

Pozor na hranice jednotlivých typov!

Nasledujúci program ukazuje, ako ľahko sa môžeme dopustiť chyby ak zabudneme na hranice typov:

Obr8_3


Na obrazovke sa objaví: 40000 a 7232 - prečo? V druhom prípade sa najprv vyhodnotí zátvorka. V zátvorke je 40000*2=80000 je už za hranicou definície typu Word a teda sa oreže - dostaneme 80000-65536=14464, polovička čoho je 7232.

Každý výraz musíme naplánovať:

  • Musíme zvážiť aké sú prípustné hodnoty.
  • Musíme overiť, či sa v procese vyhodnotenia výrazov nedôjde k "podrazu".


Sú dve cesty, ako sa vyvarovať takých situácií. Jedna z nich je používať typy premenných s väčším rozpätím, ale potom nešetríme pamäť ani strojový čas. Hoci pri dnešných rýchlych počítačoch to nie je až taký veľký problém. Druhá možnosť je umelo zaistiť v kritických miestach prechod na vhodný typ. Napr. násobiť reálnou hodnotou (čiastočný výsledok bude reálnym číslom) a potom ho pretransformovať na potrebný typu.

Ak priradzujeme premennej výraz, potom výsledok po vyhodnotení musí byť kompatibilný s typom premennej ktorému ho chceme priradiť. Nesúlad typov zistí už prekladač a oznámi to nám. Pozor na parametre podprogramov a funkcií. Sú také prípady, keď nemôžeme použiť výraz ako parameter.

Konštantný výraz


Konštantným výrazom nazývame také výrazy, ktoré neobsahujú premenné. Vyhodnotiť ich môže už prekladač. Napr.:

Const 
 Cislo = 40.2 ;
 Vyraz1 = 5.6E-2*2 ;
 Vyraz2 = Round(Cislo)*8 ;